프로젝트 팀 구성
IT 위키
더 많은 작업
프로젝트 팀 구성은 소프트웨어 개발 프로젝트의 인력을 의사결정 권한과 의사소통 구조에 따라 조직하는 방식으로, 중앙집중형(책임 프로그래머 팀), 분산형(민주주의식 팀), 혼합형(계층형 팀)이 대표적이다.
팀원이 n 명이면 서로 주고받을 수 있는 의사소통 경로는 n(n-1)/2 개다. 사람이 늘수록 경로가 급격히 늘어 조정에 드는 시간이 커진다(브룩스의 법칙). 팀 구성은 이 경로를 누구에게 모을지, 결정을 누가 내릴지를 정하는 일이다. 프로젝트의 규모, 기간, 난이도, 팀원의 숙련도를 보고 고른다.
| 구분 | 중앙집중형 (책임 프로그래머 팀) | 분산형 (민주주의식 팀) | 혼합형 (계층형 팀) |
|---|---|---|---|
| 구조 | 책임 프로그래머 한 사람에게 권한이 모인다 | 구성원이 모두 동등하다 | 고급 프로그래머가 초급 프로그래머 몇 명을 이끄는 작은 단위를 프로젝트 리더가 묶는다 |
| 의사결정 | 팀 리더(책임 프로그래머)가 목표 설정과 결정을 한다 | 구성원 합의로 정한다 | 리더와 고급 프로그래머가 나눠 맡는다 |
| 의사소통 | 리더를 거친다. 구성원 사이의 교류는 적다 | 구성원 사이에 자유롭다 | 단위 안에서는 활발, 단위 사이는 리더를 거친다 |
| 장점 | 결정이 빠르고 경로가 짧다. 일관된 설계 | 참여도·만족도가 높고 어려운 문제를 함께 푼다 | 대규모에 맞고 두 방식의 장점을 섞는다 |
| 단점 | 리더 한 사람의 능력에 성패가 달렸다. 구성원의 참여도·만족도가 낮을 수 있다 | 결정이 느리고 책임이 흐려진다 | 단위 사이의 의사소통이 막히기 쉽다 |
| 맞는 프로젝트 | 소규모, 짧은 기간, 비교적 쉬운 문제 | 장기간, 복잡하고 어려운 문제 | 대규모 프로젝트 |
팀원 사이의 의사교류를 활성화해 참여도와 만족도를 높이는 것은 분산형(민주주의식) 팀의 특징이고, 중앙집중형은 그 반대다.
1970년대 초 IBM 의 할런 밀스(Harlan Mills)가 제안했다. 외과 수술팀처럼 한 사람이 핵심 설계와 코딩을 맡고 나머지가 돕는다.
- 책임 프로그래머 : 설계·핵심 코딩·기술적 결정을 맡는다
- 보조 프로그래머 : 책임 프로그래머를 돕고 대신할 수 있다
- 프로그램 사서 : 소스·문서·테스트 자료 같은 산출물을 관리한다
- 필요에 따라 테스트·언어·관리 전문가를 둔다
와인버그(G. Weinberg)가 말한 비이기적 프로그래밍(egoless programming)에 바탕을 둔다. 코드를 개인 소유가 아닌 팀의 것으로 보고 서로 검토한다. 오늘날 애자일의 자기 조직화 팀이 이 계열이다.